#include <iostream>
#include "../../Encriptacion/Vigenere.h"
using namespace Encriptacion;

#include <../lib/igloo/igloo.h>
using namespace igloo;

Context(testVigenere)
{

	Vigenere* encriptadorPorVigenere;
	string pathDelArchivoAEncriptar;
	string pathDelArchivoEncriptado;
	string pathDelArchivoDesencriptado;

	void SetUp() {

		encriptadorPorVigenere = new Vigenere("silva");
		pathDelArchivoAEncriptar = "ArchivoAEncriptar.txt";
		pathDelArchivoEncriptado = "ArchiEncriptado.txt";
		pathDelArchivoDesencriptado= "ArchivoDesencriptado.txt";
		fstream archivoAEncriptar;
		archivoAEncriptar.open(pathDelArchivoAEncriptar.c_str(), ios::in | ios::out | ios::trunc);

		archivoAEncriptar << "Pablito clavó un clavito, qué clavito clavó pablito. \n";
		archivoAEncriptar << "A caballo regalado no se le miran los dientes - sarasa \t - \n";
		archivoAEncriptar << "nachonachonachona";
		archivoAEncriptar << "abcdefghijklmnñopqrstuvwxyz\n";
		archivoAEncriptar << "ABCDEFGHIJKLMNÑOPQRSTUVWXYZ\n";
		archivoAEncriptar << "0123456789\n";
		archivoAEncriptar << "!#$%&/()=?¡[];:_-";

		archivoAEncriptar.close();
	}

	void TearDown() {
//		remove(pathDelArchivoAEncriptar.c_str());
//		remove(pathDelArchivoEncriptado.c_str());
//		remove(pathDelArchivoDesencriptado.c_str());
		delete encriptadorPorVigenere;
	}

	Spec(testearEncriptacionDesencriptacion) {

		pathDelArchivoEncriptado = encriptadorPorVigenere->generarArchivoEncriptado(pathDelArchivoAEncriptar,4);

		Assert::That(pathDelArchivoEncriptado.length(), Is().GreaterThan(0));

		if (pathDelArchivoEncriptado != ""){

			pathDelArchivoDesencriptado = encriptadorPorVigenere->generarArchivoDesencriptado(pathDelArchivoEncriptado,4);

			Assert::That(pathDelArchivoDesencriptado.length(), Is().GreaterThan(0));
		}
	}
};
